// //版本一，函数表达式中使用表达式前后两个函数声明的名字。可以正常执行，两句输出
// function OutputATestLog_letBefore()
// {
//     console.log("OutputATestLog_letBefore 执行了一次");
// }
// let TestLetfun = function()
// {
//     OutputATestLog_letBefore();
//     OutputATestLog_letAfter();//这个能正常执行，是对书中说法的一个佐证
// };
// TestLetfun();
// function OutputATestLog_letAfter()
// {
//     console.log("OutputATestLog_letAfter 执行了一次");
// }

// //版本二，函数表达式中使用了另一个函数表达式的（函数）变量的名字，执行语句也是在中间。
// function OutputATestLog_letBefore()
// {
//     console.log("OutputATestLog_letBefore 执行了一次");
// }
// let TestLetfun = function()
// {
//     OutputATestLog_letBefore();
//     OutputATestLog_letAfter();
// };
// TestLetfun();
// let OutputATestLog_letAfter = function ()
// {
//     console.log("OutputATestLog_letAfter 执行了一次");
// };
// //F5加载报错：
// // function_define_let_code.js:20 OutputATestLog_letBefore 执行了一次
// // function_define_let_code.js:25 Uncaught ReferenceError: Cannot access 'OutputATestLog_letAfter' before initialization
// //     at TestLetfun (function_define_let_code.js:25:5)
// //     at function_define_let_code.js:27:1
// // TestLetfun @ function_define_let_code.js:25
// // (anonymous) @ function_define_let_code.js:27

// //版本三，函数表达式中使用了另一个函数表达式的（函数）变量的名字，执行语句是在最后面。
// function OutputATestLog_letBefore()
// {
//     console.log("OutputATestLog_letBefore 执行了一次");
// }
// let TestLetfun = function()
// {
//     OutputATestLog_letBefore();
//     OutputATestLog_letAfter();
// };
// let OutputATestLog_letAfter = function ()
// {
//     console.log("OutputATestLog_letAfter 执行了一次");
// };
// TestLetfun();// 唉，看TestLetfun的调用，而不看TestLetfun定义的位置，，这……
// //输出结果：
// //function_define_let_code.js:43 OutputATestLog_letBefore 执行了一次
// //function_define_let_code.js:52 OutputATestLog_letAfter 执行了一次

// //版本四，表达式中调用声明，更何况调用语句在后面，当然也能成功
// function OutputATestLog_letBefore()
// {
//     console.log("OutputATestLog_letBefore 执行了一次");
// }
// let TestLetfun = function()
// {
//     OutputATestLog_letBefore();
//     OutputATestLog_letAfter();
// };
// function OutputATestLog_letAfter()
// {
//     console.log("OutputATestLog_letAfter 执行了一次");
// }
// TestLetfun();


// function()
// {
//     console.log("测试输出");
// }();// 这一句改成“};”（即去掉调用操作符）也是同样的报错
// //F5报错：
// // function_define_let_code.js:76 Uncaught SyntaxError: Function statements require a function name (at function_define_let_code.js:76:1)

// // 再一个测试，正常执行
// OutputATestLog();
// function OutputATestLog()
// {
//     console.log("OutputATestLog 执行了一次");
//     let flocalT = function(){
//         console.log("run fun by flocalT");
//     };
//     flocalT();//加个注释，测试log输出
// }
// //function_define_let_code.js:87 OutputATestLog 执行了一次
// //function_define_let_code.js:89 run fun by flocalT

// console.log(OutputATestLog);
// //输出结果，是的整个函数的定义，包括注释语句：
// // function_define_let_code.js:96 ƒ OutputATestLog()
// // {
// //     console.log("OutputATestLog 执行了一次");
// //     let flocalT = function(){
// //         console.log("run fun by flocalT");
// //     };
// //     flocalT();//加个注释，测试log输出
// // }


(function()
{
    console.log("测试输出");
})();// 这一句改成“};”也能正常编译加载不报错，只是同时也啥输出都没有
//参照【1】p509的例子，将上面76行的试例做了修改后可以正常输出了（函数表达式上，加了个括号）
